
#ifndef _TABENNEMIS_H_
#define _TABENNEMIS_H_

#include "Ennemi.h"
#include "Trajectoire.h"


/** @brief File brief description
 Le fichier TabEnnemis.h contient la declaration de toutes les fonctions et procedures necessaires
 au stockage dans un tableau de tous les ennemis d'un niveau*/


/** @brief TabEnnemis est composee d'un tableau de pointeur sur des ennemis destines à contenir
 * tous les pointeurs sur les ennemis d'un terrain et du nombre d'ennemis (un entier)*/
typedef struct
{
	Ennemi** ptab_ennemis;
	int nbre_ennemis;
	
} TabEnnemis;

/** @brief Cette procédure initialise un TabEnnemis en saisissant toutes ses caracteristiques
 * @param [in,out] ptab_ennemi*/
void initTabEnnemis (TabEnnemis* ptab_ennemi);

/** @brief Cette fonction reserve dans le tas l'espace necessaire pour un TabEnnemis,
 * l'initialise et retourne un pointeur sur le TabEnnemis cree
 * @return ptab_ennemis*/
TabEnnemis* creerTabEnnemis ();

/** @brief Cette procedure libere l'espace memoire alloue dans le tas pour le tableau d'ennemis du TabEnnemis
 * @param [in,out] ptab_ennemi*/
void libereTabEnnemis (TabEnnemis* ptab_ennemi);

/** @brief Cette procedure libere l'espace alloue dans le tas pour un TabEnnemis
 * @param [in,out] pptab_ennemi*/
void detruireTabEnnemis (TabEnnemis** pptab_ennemi);

/** @brief Cette procedure ajoute un ennemi dans le tableau TabEnnemis
 * @param [in,out] ptab_ennemi
 * @param [in] pennemi*/
void ajouterEnnemi (TabEnnemis* ptab_ennemi, Ennemi* pennemi);

/** @brief Cette procedure supprime un ennemi du tableau TabEnnemis
 * @param[in,out] ptab_pennemis
 * @param [in] pennemi*/
void supprimerEnnemi (TabEnnemis* ptab_pennemis, Ennemi* pennemi);

#endif
